package bean.dao;

import hbt.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dominio.ItemPedido;
import dominio.OrdenPedido;

public class HibernateOrdenPedidoDAO {
	private static HibernateOrdenPedidoDAO instancia = null;
	private static SessionFactory sf = null;
	private Session session = null;
	
	public static HibernateOrdenPedidoDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new HibernateOrdenPedidoDAO();
		} 
		return instancia;
	}
	
	private Session getSession(){
		if(session == null || !session.isOpen())
			session = sf.openSession();
		return session;
	}
	
	public void closeSession(){
		if (session.isOpen()) session.close();
	}
	
	public OrdenPedido persistOrdenPedido(OrdenPedido ordenPedido){
		Session s=getSession();
		s.beginTransaction();
		s.persist(ordenPedido);
		s.flush();
		s.getTransaction().commit();
		return ordenPedido;
	}
	
	public ItemPedido persistItemPedido(ItemPedido item){
		Session s=getSession();
		s.beginTransaction();
		s.persist(item);
		s.flush();
		s.getTransaction().commit();
		return item;
	}
	
	public OrdenPedido getOrdenPedido(int numeroOrdenPedido){
		Session s=getSession();
		s.beginTransaction();
		OrdenPedido ordenPedido = (OrdenPedido)s.load(OrdenPedido.class, new Integer(numeroOrdenPedido));
		s.getTransaction().commit();
		return ordenPedido;
	}
	
	public ItemPedido getItemPedido(int idItemPedido){
		Session s=getSession();
		s.beginTransaction();
		ItemPedido item = (ItemPedido)s.load(ItemPedido.class, new Integer(idItemPedido));
		s.getTransaction().commit();
		return item;
	}
}
